//
//  NSDictionary+Extend.h
//  XLDoctor
//
//  Created by longma on 2018/12/27.
//  Copyright © 2018年 XLH. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (MJUI)
/**
 json 字符串转字典

 @return 字典
 */
- (NSDictionary *)mj_stringConvertToDictionary;
/**
 json 字符串转数组
 
 @return 数组
 */
- (NSArray *)mj_stringConvertToArray;

/// 时间字符串转时间戳
/// @param formatterStr @"yyyy-MM-dd HH:mm:ss zzz"
- (NSTimeInterval)mj_stringConvertToTimeIntervalByFormat:(NSString *)formatterStr;
/**
 判断字符串是否为空

 @param string id
 @return BOOL
 */
+ (BOOL)mj_isNullString:(id)string;

/**
 获取指定字符中间的字符串

 @param preString 前面字符
 @param laterString 后面字符
 @return 截取后的字符串
 */
- (NSString *)mj_stringByPreviousString:(NSString *)preString LaterString:(NSString *)laterString;

/**
 验证手机号码

 @return 正则验证成功返回YES, 否则返回NO
 */
- (BOOL)mj_isMobileNumber;

/**
 时间字符串转时间字符串

 @param formatterStr 2018/12/27
 @param originalFormat 2018-12-27
 @return 2018-12-27
 */
- (NSString *)mj_stringConvertToFormatStringByFormat:(NSString *)formatterStr OriginalFormat:(NSString *)originalFormat;


/**
 字符串时间 转date
 
 @param formatterStr @"yyyy-MM-dd HH:mm:ss zzz"]; aaa 上午/下午
 @return  NSDate 1545905736
 */

- (NSDate*)mj_stringConvertToDateByFormat:(NSString *)formatterStr;

/**
 判断是否是纯汉字
 @return 是否存在
 */
-(BOOL)mj_isChinese;

/**
 url编码
 @return encode
 */
- (NSString *)mj_stringEncode;

/**
 url编码
 @return encode
 */
- (NSURL *)mj_stringEncodeToUrl;
/**
 判断是否含有汉字
 @return 是否含有
 */
- (BOOL)mj_includeChinese;

/**
 时间字符串转时间字符串
 yyyy-MM-dd HH:mm:ss(固定) -> (yyyy-MM-dd HH:mm/yyyy-MM-dd)
 @param formatterStr 2018/12/27
 @return 2018/12/27
 */
- (NSString *)mj_stringConvertToFormatStringByFixFormat:(NSString *)formatterStr;

/**
 计算文本高度
 
 @param width 文本宽度
 @param font 文本字体
 @param lineSpacing 文本间距
 @return 文本的高度
 */
- (CGFloat)mj_calculateHeightByWidth:(CGFloat)width labFont:(UIFont *)font lineSpacing:(CGFloat)lineSpacing;

/**
 计算文本宽度

 @param height 文本Label高度
 @param font 文本Label字体
 @return 文本宽度
 */
- (CGFloat)mj_calculateWidthByHeight:(CGFloat)height labFont:(UIFont *)font;

/**
 过滤unicode码和空格，只留下0-9数字(从手机复制通讯录号码时)
 */
-(NSString *)mj_characterSetNumber;

/**
 移除指定位置的字符

 @param index 要删除的位置
 @return 移除后新字符串
 */
- (NSString *)mj_stringByRemoveCharacterAtIndex:(NSUInteger)index;

/**
 去掉整段文字内的所有空白字符（包括换行符）
 */
@property(readonly, copy) NSString *mj_trimAllWhiteSpaceAndLineBreak;

/**
 去掉头尾的空白字符
 */
@property(readonly, copy) NSString *mj_trim;
/**
 去掉整段文字内的所有空白字符
 */
@property(readonly, copy) NSString *mj_trimAllWhiteSpace;
/**
 去掉整段文字内的所有换行符
 */
@property(readonly, copy) NSString *mj_trimAllLineBreak;

/**
 判断是否存在表情
 */
@property(readonly, assign) BOOL mj_containEmoji;

/**
 获取UUID iOS设备唯一标识

 @return UUID
 */
+ (NSString *)mj_getUUID;

/// 数字和字母随机 字符串
/// @param num aaadsfsefef
+ (NSString *)mj_randomStringWithNum:(NSInteger)num;

/**
 获取App的版本号
 */
+ (NSString *)mj_appVersionNum;

/**
 获取App的版本号
 */
+ (NSString *)mj_appVersion;

/**
 截取身份证的出生日期并转换为日期格式

 */
- (NSString *)mj_subsIDStrToDate;

/**
 获取手机的具体型号

 */
+ (NSString *)mj_getCurrentDeviceModel;

/**
 手机号码中间加****

 */
- (NSString *)mj_securePhoneNumber;

/**
 打开URL

 */
- (void)mj_openURL;

/**
 拨打电话

 */
- (void)mj_callPhone;

/// 将单个字母的字符串转换为对应的整数
- (NSNumber *)mj_letterToInt;

/// 将单个字母的字符串转换为对应的整数
- (NSNumber *)mj_letterRuToInt;

/// 验证邮箱
- (BOOL)mj_validateEmail;

@end

#pragma mark - StringFormat
@interface NSString (MJStringFormat)

/**
 int 转字符串

 @param integerValue int 数据
 @return 字符串
 */
+ (instancetype)mj_stringWithNSInteger:(NSInteger)integerValue;

/**
 float 转字符串

 @param floatValue float 数据
 @return 字符串
 */
+ (instancetype)mj_stringWithCGFloat:(CGFloat)floatValue;

/**
 float 转字符串

 @param floatValue float 数据
 @param decimal 精确度
 @return 字符串
 */
+ (instancetype)mj_stringWithCGFloat:(CGFloat)floatValue decimal:(NSUInteger)decimal;
@end

#pragma mark - 拼音
@interface NSString (MJPinyin)
 
/*
 *获取汉字拼音的首字母, 返回的字母是大写形式, 例如: @"俺妹", 返回 @"A".
 *如果字符串开头不是汉字, 而是字母, 则直接返回该字母, 例如: @"b彩票", 返回 @"B".
 *如果字符串开头不是汉字和字母, 则直接返回 @"#", 例如: @"&哈哈", 返回 @"#".
 *字符串开头有特殊字符(空格,换行)不影响判定, 例如@"       a啦啦啦", 返回 @"A".
 */
- (NSString *)mj_firstLetter;

/// 检测字符串中是否含有字母：
- (BOOL)mj_containsLetters;

/// 检测字符串中是否含有大写字母：
- (BOOL)mj_containsUpperCaseLetters;

/// 检测字符串中是否含有小写字母：
- (BOOL)mj_containsLowerCaseLetters;

/// 检测字符串中是否含有数字
- (BOOL)mj_containsDigits;

/// 获取俄语的首字母
- (NSString *)mj_firstRuLetter;
 
@end


NS_ASSUME_NONNULL_END
